package com.xaicode.auth.annotation;

import java.lang.annotation.*;

/**
 * 数据权限范围
 * <p>
 * 加入该注解后，方法执行前将进行当前用户的数据权限判定，
 * 并将相应数据权限转换为 sql 暂存到 DataScopeContextHelper 中。
 * 通过 DataPermissionInterceptor 中自定义的 query 方法拦截，
 * 将在执行指定方法前拼接权限 sql。
 * 
 * @date 2024/12/6
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface AuthDataScope {

    /**
     * 本人数据权限时，表的别名
     */
    String userAlias() default "";

    String userField() default "";

    /**
     * 部门表的别名
     */
    String deptAlias() default "";

    /**
     * 是否使用MybatisPlus单表查询
     * 如果涉及到多表查询，该字段必须为false
     */
    boolean isSingleQuery() default false;
}
